package com.uenpay.oem.net;


import com.uenpay.oem.data.bean.Request;
import com.uenpay.oem.data.bean.UserAuthInfo;
import com.uenpay.oem.data.bean.UserIdCardInfo;
import com.uenpay.oem.data.bean.UserTradePoundageInfo;
import com.uenpay.service.bean.BankCardInfo;
import com.uenpay.service.bean.TransBankCardList;
import com.uenpay.util.net.Result;
import com.uenpay.util.net.listener.HttpOnNextListener;

import java.util.HashMap;
import java.util.List;

import retrofit2.http.Body;
import retrofit2.http.POST;
import rx.Observable;

/**
 * Created by PS on 2016/5/16.
 */
public interface RetrofitHttpService {

    //-------------- 银行卡模块 -----------

    @POST("user/bankCard/getUserBankList")
    Observable<Result<List<BankCardInfo>>> getBankCardList(@Body Request request);

    @POST("user/bankCard/userBankCardBinSelect")
    Observable<Result<BankCardInfo>> userBankCardBinSelect(@Body Request request);

    @POST("user/bankCard/saveUserBank")
    Observable<Result<BankCardInfo>> saveUserBank(@Body Request request);

    @POST("user/bankCard/relieveUserBankDetail")
    Observable<Result<Object>> relieveUserBankDetail(@Body Request request);

    @POST("user/bankCard/recognitionUserBank")
    Observable<Result<BankCardInfo>> recognitionUserBank(@Body Request request);

    @POST("user/bankCard/defaultUserBankDetail")
    Observable<Result<Object>> defaultUserBankDetail(@Body Request request);

    //--------------- 实名认证模块 ----------

    @POST("user/realName/userRealNameImageUpload")
    Observable<Result<UserIdCardInfo>> userRealNameImageUpload(@Body Request request);

    @POST("user/realName/userRealNameAuth")
    Observable<Result<Object>> userRealNameAuth(@Body Request request);

    @POST("user/credit/userCreditVerify")
    Observable<Result<UserAuthInfo>> userCreditVerify(@Body Request request);


    //--------------- 交易模块 ------------

    //充值验证码检查
    @POST("pay/wkpay/checkCode")
    Observable<Result<Object>> checkCode(@Body Request request);

    //查询充值交易是否成功
    @POST("pay/wkpay/sendQuery")
    Observable<Result<Object>> sendQuery(@Body Request request);

    //查询交易银行卡列表
    @POST("user/trade/common/getUserBankList")
    Observable<Result<TransBankCardList<BankCardInfo>>> getTransBankList(@Body Request request);

    //提现
    @POST("pay/withdraw/apply")
    Observable<Result<Object>> withDraw(@Body Request request);

    //费率
    @POST("user/trade/getUserTradeServiceInfo")
    Observable<Result<UserTradePoundageInfo>> getUserTradePoundage(@Body Request request);

    //转账
    @POST("pay/imprest/turnover")
    Observable<Result<HashMap<String, String>>> transfer(@Body Request request);
}
